Presently, chipset implementations may utilize multiple controllers to increase performance. For example, a chipset implementation may include one or more Universal Serial Bus (USB) host controllers. Multiple USB host controllers can increase performance by reducing the amount of USB bandwidth that is shared behind a single controller. Generally, a USB host controller can service two USB ports. With most mobile platforms containing multiple USB ports, these platforms must also contain multiple USB host controllers. Some platforms may have four or five USB host controllers.
Significantly, the operation of each USB host controller is independent from the other USB host controllers (i.e., the state of one has nothing to do with the state of another). Furthermore, the operation of the USB host controllers is periodic. Once started, a USB host controller will fetch a new work list, or frame, every 1 millisecond (ms).
When a processor enters a power saving mode the internal cache of the processor is no longer available. However, when USB devices need to access memory, the USB host controllers will snoop the cache of the processor to ensure that the data is not stored there. Accordingly, the processor must exit its power saving mode so that it can access the cache for this snoop. Inefficiency at the processor level may result, as the processor must be brought out of its low power state into a higher power state in order to service the snoop request of the USB host controller.
If multiple USB host controllers are implemented, there may be several fetches and snoops that prevent the processor from entering a low power state. For example, immediately prior to a USB host controller performing a fetch it will issue a “start of frame” marker. As all USB host controllers are started and operated independently by host software, the “start of frame” markers for each USB host controller may be offset within the 1 ms time interval for fetching. In such a scenario, the processor will not have a chance to enter an idle state, resulting in unnecessary power consumption.
Presently, no mechanism implemented today deals with this problem. Some solutions propose pre-fetching the next several work lists (frames). However, this solution is problematic as the USB host controller software is allowed to run very close to the hardware and thus a pre-fetch could result in stale data.